package model.Aplicacion;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.uqbar.commons.model.Entity;
import org.uqbar.commons.model.Home;

import clasesPrincipales.Ciudad;
import clasesPrincipales.Contacto;
import clasesPrincipales.Evento;
import simulaPersistencia.CiudadHome;
import simulaPersistencia.ContactoHome;
import simulaPersistencia.EventoHome;

public  class Agenda{

	public static Map<Class<? extends Entity>, Home<? extends Entity>> homes;
	
	public static Home<? extends Entity> getHome(Class<? extends Entity> aClass) {
		if (homes == null) {
			homes = new HashMap<Class<? extends Entity>, Home<? extends Entity>>();
			homes.put(Evento.class, new EventoHome());

			//////////////////////////////////////////
			List<Ciudad> ciudades = new ArrayList<Ciudad>();
			ciudades.add(new Ciudad("Wilde"));
			ciudades.add(new Ciudad("Bernal"));
			ciudades.add(new Ciudad("Quilmes"));
			ciudades.add(new Ciudad("Berazategui"));
			ciudades.add(new Ciudad("Ezpeleta"));
			ciudades.add(new Ciudad("Avellaneda"));
			ciudades.add(new Ciudad("Capital Federal"));
			ciudades.add(new Ciudad("Lomas de Zamora"));
			ciudades.add(new Ciudad("Varela"));
			ciudades.add(new Ciudad("Otra"));
			
			CiudadHome ch = new CiudadHome();
			for (Ciudad c : ciudades) {
				ch.agregar(c);
			}
	
			//////////////////////////////////////////
			homes.put(Ciudad.class, ch);
			//////////////////////////////////////////
			
			
			
			
			List<Contacto> contactos = new ArrayList<Contacto>();
			contactos.add(new Contacto("Rocio Amaya", "11111", "rochi@gmail.com", new Date(), ciudades.get(0)));
			contactos.add(new Contacto("Alan Rodas", "777", "alan@gmail.com", new Date(), ciudades.get(2)));
			contactos.add(new Contacto("Alexis", "452542", "alexis@gmail.com", new Date(), ciudades.get(4)));
			contactos.add(new Contacto("Lucas perez", "11111", "lucas@gmail.com", new Date(), ciudades.get(5)));
			contactos.add(new Contacto("Leandro gomez", "11111", "Leandro@gmail.com", new Date(), ciudades.get(6)));
			contactos.add(new Contacto("Eric Stoll", "11111", "eric@gmail.com", new Date(), ciudades.get(3)));
			contactos.add(new Contacto("Ronny de jesus", "11111", "ronny@gmail.com", new Date(), ciudades.get(1)));

			ContactoHome conhome = new ContactoHome();
			for (Contacto c : contactos) {
				conhome.agregar(c);
			}
			
			//////////////////////////////////////////
			homes.put(Contacto.class, conhome);
			//////////////////////////////////////////
		}
		return homes.get(aClass);
		
	}

	public static void main(String[] args) {
		for (Entity c : Agenda.getHome(Contacto.class).buscarTodos()) {
			System.out.println(c);
		}
	}
}
